#!/usr/bin/env python3
"""
ronfmt_wrap.py
Python 包装器，让 ronfmt 支持“无参时递归目录”用法。
"""
import os
import sys
import subprocess
from pathlib import Path

def find_ron_files(root="."):
    """递归查找所有 .ron 文件"""
    return list(Path(root).rglob("*.ron"))

def run_ronfmt(file_path, opts):
    """调用 ronfmt 并打印正在处理的文件"""
    cmd = ["ronfmt"] + opts + [str(file_path)]
    print(f"Formatting: {file_path}")
    try:
        subprocess.run(cmd, check=True)
    except subprocess.CalledProcessError as e:
        print(f"[ERROR] Failed to format {file_path}", file=sys.stderr)

def main():
    # 1. 如果用户敲了 --help / -h，直接透传
    if {"-h", "--help"}.intersection(sys.argv):
        subprocess.run(["ronfmt", "--help"])
        return

    # 2. 把用户给的选项和真正文件名分开
    files = [a for a in sys.argv[1:] if not a.startswith("-")]
    opts  = [a for a in sys.argv[1:] if a.startswith("-")]

    # 3. 找不到 ronfmt 就报错
    try:
        subprocess.run(["ronfmt", "--version"], stdout=subprocess.DEVNULL, check=True)
    except (subprocess.CalledProcessError, FileNotFoundError):
        print("[ERROR] 找不到命令 'ronfmt'，请先安装并加入 PATH", file=sys.stderr)
        sys.exit(1)

    # 4. 有显式文件名 -> 只处理这些；否则递归当前目录
    if files:
        for f in files:
            if not Path(f).exists():
                print(f"[ERROR] 文件不存在: {f}", file=sys.stderr)
                continue
            run_ronfmt(f, opts)
    else:
        ron_files = find_ron_files()
        if not ron_files:
            print("当前目录下未找到 .ron 文件，无需格式化。")
            return
        for rf in ron_files:
            run_ronfmt(rf, opts)

if __name__ == "__main__":
    main()
